Sensor fusion

ABSTRACT

According to one aspect, a long short-term memory (LSTM) cell for sensor fusion may include M number of forget gates, M number of input gates, and M number output gates. The M number of forget gates may receive M sets of sensor encoding data from M number of sensors and a shared hidden state. The M number of input gates may receive the corresponding M sets of sensor data and the shared hidden state. The M number output gates may generate M partial shared cell state outputs and M partial shared hidden state outputs based on the M sets of sensor encoding data, the shared hidden state, and a shared cell state.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Patent Application Ser. No. 62/870,460 (Attorney Docket No. HRA-45941) entitled “SENSOR FUSION”, filed on Jul. 3, 2019; the entirety of the above-noted application is incorporated by reference herein.

BACKGROUND

A long short-term memory (LSTM) is an artificial recurrent neural network (RNN) architecture for deep learning or machine learning. An LSTM cell remembers values over arbitrary time intervals and regulates the flow of information into and out of the LSTM cell. During back propagation, recurrent neural networks may suffer from a vanishing gradient problem. Gradients are values used to update a neural networks weights. The vanishing gradient problem occurs when the gradient shrinks as it back propagates through time. If a gradient value becomes extremely small, the gradient may not contribute to the learning.

BRIEF DESCRIPTION

According to one aspect, a long short-term memory (LSTM) cell for sensor fusion may include a first forget gate, a second forget gate, a first input gate, a second input gate, a first output gate, a second output gate, a hidden state gate, and a cell state gate. The first forget gate may receive a first sensor encoding st and a first shared hidden state h_(t-1). The second forget gate may receive a second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1). The first input gate may receive the first sensor encoding s_(t) ^(i) and the first shared hidden state h_(t-1). The second input gate may receive second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1). The first output gate may generate a first output based on a first shared cell state c_(t-1), the first sensor encoding s_(t) ^(i), and the first shared hidden state h_(t-1). The second output gate may generate a second output based on the first shared cell state c_(t-1), the second sensor encoding s_(t) ^(j), and the first hidden state h_(t-1). The hidden state gate may generate a second shared hidden state h_(t) based on the first output and the second output. The cell state gate may generate a second shared cell state c_(t) based on an output of the first forget gate, an output of the second forget gate, an output of the first input gate, and an output of the second input gate.

The first forget gate or the second forget gate may employ a sigmoid function to generate the output of the first forget gate or the output of the second forget gate, respectively. The output of the first forget gate f_(t) ^(i)=σ(W_(f) ^(i)*s_(t) ^(i)+U_(f) ^(i)*h_(t-1)+b_(f) ^(i)). The first input gate or the second input gate may employ a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function to generate the output of the first input gate or the output of the second input gate, respectively. The output of the first input gate i_(g) ^(i)=σ(W_(i) ^(i)*s_(t) ^(i)+U_(i) ^(i)*h_(t-1)+b_(i) ^(i)). The first output gate or the second output gate may employ a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function to generate an output of the first output gate or an output of the second output gate, respectively. The output of the first output gate o_(t) ^(i)=σ(W_(o) ^(i)*s_(t) ^(i)+U_(o) ^(i)*h_(t-1)+b_(o) ^(i)). The hidden state gate may generate the second shared hidden state h_(t) by calculating an element-wise sum of the first output and the second output.

A first architecture within the LSTM cell may include the first forget gate, the first input gate, and the first output gate. A second architecture within the LSTM cell may include the second forget gate, the second input gate, and the second output gate. The first architecture may be implemented in parallel to the second architecture. The first architecture may generate a first partial shared cell state c_(t) ^(i)=c_(t-1)⊙f_(t) ^(i)+i_(t) ^(i)⊙g_(t) ^(i). The second architecture may generate a second partial shared cell state c_(t) ^(j)=c_(t-1)⊙f_(t) ^(j)+i_(t) ^(j)⊙g_(t) ^(j). The cell state gate may generate the second shared cell state c_(t) by calculating an element-wise sum of the first partial shared cell state c_(t) ^(i) and the second partial shared cell state c_(t) ^(j).

According to one aspect, a method for sensor fusion associated with a long short-term memory (LSTM) neural network may include receiving a first sensor encoding s_(t) ^(i) and a first shared hidden state h_(t-1) at a first forget gate, receiving a second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1) at a second forget gate, receiving the first sensor encoding s_(t) ^(i) and the first shared hidden state h_(t-1) at a first input gate, receiving second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1) at a second input gate, generating a first output based on a first shared cell state c_(t-1), the first sensor encoding s_(t) ^(i), and the first shared hidden state h_(t-1) at a first output gate, generating a second output based on the first shared cell state c_(t-1), the second sensor encoding s_(t) ^(j), and the first hidden state h_(t-1) at a second output gate, generating a second shared hidden state h_(t) based on the first output and the second output at a hidden state gate, and generating a second shared cell state c_(t) based on an output of the first forget gate, an output of the second forget gate, an output of the first input gate, and an output of the second input gate at a cell state gate.

The method for sensor fusion may include generating the output of the first forget gate or the output of the second forget gate by employing a sigmoid function. The method for sensor fusion may include generating the output of the first input gate or the output of the second input gate by employing a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function. The method for sensor fusion may include generating an output of the first output gate or an output of the second output gate by employing a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function.

According to one aspect, a long short-term memory (LSTM) cell for sensor fusion may include M number of forget gates, M number of input gates, and M number output gates. The M number of forget gates may receive M sets of sensor encoding data from M number of sensors and a shared hidden state h_(t-1). The M number of input gates may receive the corresponding M sets of sensor data and the shared hidden state h_(t-1). The M number output gates may generate M partial shared cell state outputs and M partial shared hidden state outputs based on the M sets of sensor encoding data, the shared hidden state h_(t-1), and a shared cell state c_(t-1). M may be >=2.

The LSTM cell for sensor fusion may include a cell state gate generating an updated shared cell state c_(t) by calculating an element-wise sum of the M partial shared cell state outputs. The LSTM cell for sensor fusion may include a hidden state gate generating an updated shared hidden state h_(t) by calculating an element-wise sum of the M partial shared hidden state outputs. The LSTM cell for sensor fusion may include a first architecture and a second architecture. The first architecture within the LSTM cell may include a first forget gate of the M number of forget gates, a first input gate of the M number of input gates, and a first output gate of the M number of output gates. The second architecture within the LSTM cell may include a second forget gate of the M number of forget gates, a second input gate of the M number of input gates, and a second output gate of the M number of output gates. The first architecture may be implemented in parallel to the second architecture. The M number of forget gates, the M number of input gates, and the M number of output gates may employ a sigmoid function.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of an exemplary long short-term memory (LSTM) cell, according to one aspect.

FIG. 2 is an illustration of an exemplary long short-term memory (LSTM) cell, according to one aspect.

FIG. 3 is an illustration of an exemplary long short-term memory (LSTM) cell, according to one aspect.

FIG. 4 is an exemplary component diagram of a system for sensor fusion associated with the long short-term memory (LSTM) cells of FIGS. 1-3, according to one aspect.

FIG. 5 is an exemplary flow diagram of a method for sensor fusion associated with the long short-term memory (LSTM) cells of FIGS. 1-3, according to one aspect.

FIG. 6 is an exemplary flow diagram of a method for sensor fusion associated with the long short-term memory (LSTM) cells of FIGS. 1-3, according to one aspect.

FIG. 7 is an illustration of an example computer-readable medium or computer-readable device including processor-executable instructions configured to embody one or more of the provisions set forth herein, according to one aspect.

FIG. 8 is an illustration of an example computing environment where one or more of the provisions set forth herein are implemented, according to one aspect.

DETAILED DESCRIPTION

The following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Further, one having ordinary skill in the art will appreciate that the components discussed herein, may be combined, omitted or organized with other components or organized into different architectures.

A “processor”, as used herein, processes signals and performs general computing and arithmetic functions. Signals processed by the processor may include digital signals, data signals, computer instructions, processor instructions, messages, a bit, a bit stream, or other means that may be received, transmitted, and/or detected. Generally, the processor may be a variety of various processors including multiple single and multicore processors and co-processors and other multiple single and multicore processor and co-processor architectures. The processor may include various modules to execute various functions.

A “cell”, as used herein, may be implemented as a hardware circuit, integrated circuit (IC), etc. or implemented by the processor using digital signals, data signals, computer instructions, processor instructions, etc.

A “memory”, as used herein, may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, ROM (read only memory), PROM (programmable read only memory), EPROM (erasable PROM), and EEPROM (electrically erasable PROM). Volatile memory may include, for example, RAM (random access memory), synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDRSDRAM), and direct RAM bus RAM (DRRAM). The memory may store an operating system that controls or allocates resources of a computing device.

A “disk” or “drive”, as used herein, may be a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, and/or a memory stick. Furthermore, the disk may be a CD-ROM (compact disk ROM), a CD recordable drive (CD-R drive), a CD rewritable drive (CD-RW drive), and/or a digital video ROM drive (DVD-ROM). The disk may store an operating system that controls or allocates resources of a computing device.

A “bus”, as used herein, refers to an interconnected architecture that is operably connected to other computer components inside a computer or between computers. The bus may transfer data between the computer components. The bus may be a memory bus, a memory controller, a peripheral bus, an external bus, a crossbar switch, and/or a local bus, among others. The bus may also be a vehicle bus that interconnects components inside a vehicle using protocols such as Media Oriented Systems Transport (MOST), Controller Area network (CAN), Local Interconnect Network (LIN), among others.

A “database”, as used herein, may refer to a table, a set of tables, and a set of data stores (e.g., disks) and/or methods for accessing and/or manipulating those data stores.

An “operable connection”, or a connection by which entities are “operably connected”, is one in which signals, physical communications, and/or logical communications may be sent and/or received. An operable connection may include a wireless interface, a physical interface, a data interface, and/or an electrical interface.

A “computer communication”, as used herein, refers to a communication between two or more computing devices (e.g., computer, personal digital assistant, cellular telephone, network device) and may be, for example, a network transfer, a file transfer, an applet transfer, an email, a hypertext transfer protocol (HTTP) transfer, and so on. A computer communication may occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a local area network (LAN), a wide area network (WAN), a point-to-point system, a circuit switching system, a packet switching system, among others.

A “mobile device”, as used herein, may be a computing device typically having a display screen with a user input (e.g., touch, keyboard) and a processor for computing. Mobile devices include handheld devices, portable electronic devices, smart phones, laptops, tablets, and e-readers.

A “vehicle”, as used herein, refers to any moving vehicle that is capable of carrying one or more human occupants and is powered by any form of energy. The term “vehicle” includes cars, trucks, vans, minivans, SUVs, motorcycles, scooters, boats, personal watercraft, and aircraft. In some scenarios, a motor vehicle includes one or more engines. Further, the term “vehicle” may refer to an electric vehicle (EV) that is powered entirely or partially by one or more electric motors powered by an electric battery. The EV may include battery electric vehicles (BEV) and plug-in hybrid electric vehicles (PHEV). Additionally, the term “vehicle” may refer to an autonomous vehicle and/or self-driving vehicle powered by any form of energy. The autonomous vehicle may or may not carry one or more human occupants.

A “vehicle system”, as used herein, may be any automatic or manual systems that may be used to enhance the vehicle, driving, and/or safety. Exemplary vehicle systems include an autonomous driving system, an electronic stability control system, an anti-lock brake system, a brake assist system, an automatic brake prefill system, a low speed follow system, a cruise control system, a collision warning system, a collision mitigation braking system, an auto cruise control system, a lane departure warning system, a blind spot indicator system, a lane keep assist system, a navigation system, a transmission system, brake pedal systems, an electronic power steering system, visual devices (e.g., camera systems, proximity sensor systems), a climate control system, an electronic pretensioning system, a monitoring system, a passenger detection system, a vehicle suspension system, a vehicle seat configuration system, a vehicle cabin lighting system, an audio system, a sensory system, among others.

The aspects discussed herein may be described and implemented in the context of non-transitory computer-readable storage medium storing computer-executable instructions. Non-transitory computer-readable storage media include computer storage media and communication media. For example, flash memory drives, digital versatile discs (DVDs), compact discs (CDs), floppy disks, and tape cassettes. Non-transitory computer-readable storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, modules, or other data.

Early Recurrent Fusion (ERF)

FIG. 1 is an illustration of an exemplary long short-term memory (LSTM) cell 100, according to one aspect. The LSTM cell of FIG. 1 may include one or more gates and may receive input signals (e.g., a first sensor encoding s_(t) ^(i), a second sensor encoding s_(t) ^(j)) from two or more sensors (e.g., S^(i) 102, S^(j) 104). According to one aspect, the two or more sensors S^(i) 102, S^(j) 104 may be of different sensor types (e.g., S^(i) 102 may be an image sensor, S^(j) 104 may be a controller area network bus sensor). Although FIG. 1 and some of the other figures described herein are described with reference to an image sensor and a CAN bus sensor, any other sensor types may be utilized. The two or more sensors S^(i) 102 (e.g., a first sensor), S^(i) 104 (e.g., a second sensor) may be of the same sensor type (i.e., both may be image sensors, etc.) or may be of different sensor types.

A first encoding module 106 and a second encoding module 108 may be configured to pre-process the sensor input signals or the first sensor encoding s_(t) ^(i) and the second sensor encoding s_(t) ^(j) and bring the respective encodings s_(t) ^(i), s_(t) ^(j) to the same dimension prior to any sensor fusion. In this way, the first encoding module 106 and the second encoding module 108 process the first sensor encoding s_(t) ^(i) and the second sensor encoding s_(t) ^(j), respectively, such that they are temporally correlated.

According to one aspect, Early Recurrent Fusion (ERF) may be implemented via concatenation or fusion via a concatenator 110, which may concatenate, fuse, perform fusion, sum, etc. the respective encodings s_(t) ^(i), s_(t) ^(j). The output or result of the concatenator 110, a first cell state c_(t-1) 122 (e.g., which may be a shared cell state across two or more architectures, which are discussed herein with respect to FIGS. 3 and 5A-5B), and a first hidden state h_(t-1) 124 (e.g., which may be a shared hidden state across the two or more architectures, which are discussed herein with respect to FIGS. 3 and 5A-5B) may be inputs to the LSTM cell 100 of FIG. 1.

FIG. 1 is an illustration of an exemplary first architecture of the LSTM cell 100, and according to one aspect, may be implemented in parallel with one or more additional architectures. The first architecture of the LSTM cell 100 of FIG. 1 may include a first forget gate 126 receiving the output or the result of the concatenator 110 (concatenation result of the first sensor encoding s_(t) ^(i) 102 and the second sensor encoding s_(t) ^(j) 104) and the first hidden state h_(t-1) 124. The first forget gate 126 may include or employ a sigmoid function 132 and an element-wise product function 128 to generate an output for the first forget gate 126, which may be an intermediary result associated with a second cell state c_(t) 162.

Additionally, the first architecture of the LSTM cell 100 of FIG. 1 may include a first input gate 134 receiving the output or the result of the concatenator 110 and the first hidden state h_(t-1) 124. The first input gate 134 may include or employ a sigmoid function (e.g., 134), an element-wise product function 142, a hyperbolic tangent function (tanh) 144, or an element-wise sum function 146 to generate the output of the first input gate 134. The tanh function 144 may receive the output or the result of the concatenator 110 and the first hidden state h_(t-1) 124, the element-wise product function 142 may be taken of an output of the tanh function 144 and an output of the sigmoid function 134. An output of the element-wise product function 142 may be element-wise summed 146 with an output of the first forget gate 126 to thereby generate the second cell state c_(t) 162.

The first architecture of the LSTM cell 100 of FIG. 1 may include an output gate 152, which may include or employ a sigmoid function receiving the output or the result of the concatenator 110 and the first hidden state h_(t-1) 124. The second cell state c_(t) 162 may be passed through a tanh function 154 resulting in an output for the tanh function 154. An element-wise product 156 of the output for the tanh function 154 and the output gate 152 may be taken to generate a second hidden state h_(t) 164.

FIG. 2 is an illustration of an exemplary LSTM cell, such as the LSTM cell 100 of FIG. 1, described in greater detail, according to one aspect. In FIG. 2, it may be seen that concatenation may be performed by the concatenator 110 or an element-wise sum 210 of the first sensor encoding s_(t) ^(i) 102 and the second sensor encoding s_(t) ^(j) 104 may be calculated. The output of the concatenator 110 or the element-wise sum 210 may be designated as x_(t), which may be element-wise summed with the first hidden state h_(t-1) 124. The output of the first forget gate 126, which may include or employ the sigmoid function may be represented as f_(t). The output of the sigmoid function associated with the input gate 134 may be represented as i_(t). The output of the tanh function 144 associated with the input gate 134 may be represented as g_(t). The output of the sigmoid function associated with the output gate 152 may be represented as o_(t). According to one aspect, the element-wise product function 128 of the LSTM cell 100 of FIG. 1 may be implemented as an element-wise product function 228 of the first cell state c_(t-1) 122 and the output f_(t) of the first forget gate 126. In this regard, the output of the element-wise product function 142 may be element-wise summed 146 with the output of the element-wise product function 228 to thereby generate the second cell state c_(t) 162.

x _(t) = . . . s _(t) ^(i) +s _(t) ^(j) . . . (or) . . . s _(t) ^(i) ⊕s _(t) ^(j) . . . ,   (1)

f _(t)=σ(W _(f) *x _(t) +U _(f) *H _(t-1) b _(f)),

i _(t)=σ(W _(i) *x _(t) +U _(i) *H _(t-1) +b _(i)),

o _(t)=σ(W _(o) *x _(t) +U _(o) *h _(t-1) +b _(o)),

g _(t)=tanh(W _(g) *x _(t) +U _(g) *h _(t-1) +b _(g)),   (2)

c _(t) =c _(t-1) ⊙f _(t) +i _(t) ⊙g _(t),

h _(t) =o _(t)⊙ tanh(c _(t))  (3)

Late Recurrent Summation (LRS)

FIG. 3 is an illustration of an exemplary LSTM cell including a first architecture 300 a and a second architecture 300 b, according to one aspect. While FIG. 3 is described with reference to merely the first architecture 300 a and the second architecture 300 b, additional architectures may be implemented in parallel in an array-like fashion for Late Recurrent Summation using M number of sensors.

The first architecture 300 a may include a first gate, which may include an element-wise sum function 212 a summing the first sensor encoding s_(t) ^(i) 102 with a first shared hidden state h_(t-1) 124 and generating an output which may be fed to a first forget gate 126 a, a first input gate 134 a, a first tanh function 144 a, and a first output gate 152 a of the first architecture 300 a. The first forget gate 126 a may include or employ a sigmoid function and generate an output f_(t) ^(i). An element-wise product 128 a of the output f_(t) ^(i) of the first forget gate 126 a and a first shared cell state c_(t-1) 122 may be calculated. The first shared hidden state h_(t-1) 124 and the first shared cell state c_(t-1) 122 may be shared or input into multiple architectures, such as the first architecture 300 a, the second architecture 300 b, a third architecture, etc. In this way, the first shared hidden state h_(t-1) 124 and the first shared cell state c_(t-1) 122 may be considered shared stated or common states.

The first input gate 134 a may include or employ a sigmoid function and generate an output it. The first tanh function 144 a may generate an output. The output it of the first input gate 134 a and the output of the first tanh function 144 a may be fed to an element-wise product function 142 a. The element-wise product function 142 a may generate an output by calculating the element-wise product of the output it of the first input gate 134 a and the output of the first tanh function 144 a. The output of the element-wise product function 142 a may be element-wise summed 146 a with the output of the element-wise product function 128 a. An output of the element-wise sum function 146 a may be a first partial shared cell state c_(t) ^(i) 302 a. The first partial shared cell state c_(t) ^(i) 302 a may be fed to a first tanh function 154 a. The first output gate 152 a may include or employ a sigmoid function and generate an output. The output of the first output gate 152 a and an output of the first tanh function 154 a may be fed to an element-wise product function 156 a, which may generate a first partial shared hidden state h_(t) ^(i) 304 a.

The second architecture 300 b may include a first gate, which may include an element-wise sum function 212 b summing the second sensor encoding s_(t) ^(j) 104 with the same first shared hidden state h_(t-1) 124 (e.g., provided to the first architecture 300 a) and generating an output which may be fed to a second forget gate 126 b, a second input gate 134 b, a second tanh function 144 b, and a second output gate 152 b of the second architecture 300 b. The second forget gate 126 b may include or employ a sigmoid function and generate an output f_(t) ^(j). An element-wise product 128 b of the output f_(t) ^(j) of the second forget gate 126 b and the same first shared cell state c_(t-1) 122 (e.g., provided to the first architecture 300 a) may be calculated.

The second input gate 134 b may include or employ a sigmoid function and generate an output it. The second tanh function 144 b may generate an output. The output it of the second input gate 134 b and the output of the second tanh function 144 b may be fed to an element-wise product function 142 b. The element-wise product function 142 b may generate an output by calculating the element-wise product of the output it of the second input gate 134 b and the output of the second tanh function 144 b. The output of the element-wise product function 142 b may be element-wise summed 146 b with the output of the element-wise product function 128 b. An output of the element-wise sum function 146 b may be a second partial shared cell state c_(t) ^(j) 302 b. The second partial shared cell state c_(t) ^(j) 302 b may be fed to a second tanh function 154 b. The second output gate 152 b may include or employ a sigmoid function and generate an output. The output of the second output gate 152 b and an output of the second tanh function 154 b may be fed to an element-wise product function 156 b, which may generate a second partial shared hidden state h_(t) ^(j) 304 b.

The second architecture 300 b may be identical to the first architecture 300 a, except that the second architecture 300 b may receive the second sensor encoding s_(t) ^(j) 104 as an input rather than the first sensor encoding s_(t) ^(i) 102. Element-wise sum functions for a cell state gate 312 and a hidden state gate 314 may sum the first partial shared cell state c_(t) ^(i) 304 a with the second partial shared cell state c_(t) ^(j) 304 b and the first partial shared hidden state h_(t) ^(i) 302 a with the second partial shared hidden state h_(t) ^(j) 302 b, to generate a second shared cell state c_(t) 162 and a second shared hidden state h_(t) 164, respectively. Should additional architectures be implemented, the element-wise sum functions for the cell state gate 312 and the hidden state gate 314 may sum additional partial shared cell states and/or additional partial shared hidden states accordingly (e.g., c_(t) ^(i)+c_(t) ^(j)+c_(t) ^(k) or h_(t) ^(i)+h_(t) ^(j)+h_(t) ^(k)).

According to one aspect of Late Recurrent Summation, there may be M copies of the LSTM units or architectures (e.g., 300 a, 300 b, etc. or one for each sensor). For each modality, a separate forget, input, output and cell state may be calculated. Weights, W_(*), U_(*), and biases, b_(*), that transform the input space for each gate are unique for each modality but may be shared across time. Thus, each LSTM unit or architecture may receive information from the states of the past time step via the shared states (e.g., the first shared hidden state h_(t-1) 124 and the first shared cell state c_(t-1) 122) and the input from the current time step, s_(t) (e.g., corresponding sensor input).

Now, instead of having separate states of each LSTM unit of a sensor, all the architectures receive the same shared states or common states (e.g., the first shared hidden state h_(t-1) 124 and the first shared cell state c_(t-1) 122) obtained from the previous time-step. In this way, fused representations may be propagated temporally. By sharing the past shared cell state c_(t-1) across all sensors, the model may individually decide whether to retain or discard memory for each modality. As discussed above, the partial shared hidden and cell states are added to produce a combined representation for the second shared cell state c_(t) and the second shared hidden state h_(t) that may be sent or passed to the next time step.

f _(t) ^(i)=σ(W _(f) ^(i) *s _(t) ^(i) +U _(f) ^(i) *h _(t-1) +b _(f) ^(i)),

i _(g) ^(i)=σ(W _(i) ^(i) *s _(t) ^(i) +U _(i) ^(i) *h _(t-1) +b _(i) ^(i)),

o _(t) ^(i)=σ(W _(o) ^(i) *s _(t) ^(i) +U _(o) ^(i) *h _(t-1) +b _(o) ^(i)),

g _(t) ^(i)=tanh(W _(g) ^(i) *s _(t) ^(i) +U _(g) ^(i) *h _(t-1) +b _(g) ^(i)),   (4)

c _(t) ^(i) =c _(t-1) ⊙f _(t) ^(i) +i _(t) ^(i)⊙g_(t) ^(i),

h _(t) ^(i) =o _(t) ^(i)⊙ tanh(c _(t) ^(i)),   (5)

c_(t)=Σ_(i=1) ^(M) c_(t) ^(i), h_(t)=Σ_(i=1) ^(M) h_(t) ^(i)  (6)

FIG. 4 is an exemplary component diagram of a system for sensor fusion associated with the LSTM cells of FIGS. 1-3, according to one aspect. The system for sensor fusion may include a processor 402, a memory 404, a storage drive 406, a communication interface 408, an LSTM module 412, and a bus 442. The LSTM module may be implemented via the processor 402 and execute or perform one or more of the functions described above with reference to FIGS. 1-3, such as performing the element-wise sum function, the element-wise product function, the tanh function, the sigmoid function, etc.

FIG. 5 is an exemplary flow diagram of a method 500 for sensor fusion associated with the LSTM cells of FIGS. 1-3, according to one aspect. The method 500 may include receiving 502 a first sensor data within the LSTM cell, receiving 504 a second sensor data within LSTM cell separate from the first sensor data, processing 506 the first sensor data using a first forget gate within the LSTM cell, processing 508 the second sensor data using a second forget gate within the LSTM cell different than the first forget gate, processing 510 the first sensor data using a first input gate within the LSTM cell, processing 512 the second sensor data using a second input gate within the LSTM cell different than the first input gate, generating 514 a first output using a first output gate within the LSTM cell and a cell state, and generating 516 a second output using a second output gate within the LSTM cell and the cell state.

FIG. 6 is an exemplary flow diagram of a method for sensor fusion associated with the LSTM cells of FIGS. 1-3, according to one aspect. The method 600 may include receiving 602 M number of sets of sensor data within the LSTM cell from M number of sensors, processing 604 M number of sets of sensor data using M number of forget gates within LSTM cell corresponding to the M number of sets of sensor data, processing 606 M sets of sensor data using M number of input gates within LSTM cell, and generating 608 M number of outputs (to determine an updated cell state and updated hidden state) using M number of output gates within LSTM cell and the previous cell state.

Still another aspect involves a computer-readable medium including processor-executable instructions configured to implement one aspect of the techniques presented herein. An aspect of a computer-readable medium or a computer-readable device devised in these ways is illustrated in FIG. 7, wherein an implementation 700 includes a computer-readable medium 708, such as a CD-R, DVD-R, flash drive, a platter of a hard disk drive, etc., on which is encoded computer-readable data 706. This encoded computer-readable data 706, such as binary data including a plurality of zero's and one's as shown in 706, in turn includes a set of processor-executable computer instructions 704 configured to operate according to one or more of the principles set forth herein. In this implementation 700, the processor-executable computer instructions 704 may be configured to perform a method 702, such as the method 500 of FIG. 5 or the method 600 of FIG. 6. In another aspect, the processor-executable computer instructions 704 may be configured to implement a system, such as the system 400 of FIG. 4. Many such computer-readable media may be devised by those of ordinary skill in the art that are configured to operate in accordance with the techniques presented herein.

As used in this application, the terms “component”, “module,” “system”, “interface”, and the like are generally intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processing unit, an object, an executable, a thread of execution, a program, or a computer. By way of illustration, both an application running on a controller and the controller may be a component. One or more components residing within a process or thread of execution and a component may be localized on one computer or distributed between two or more computers.

Further, the claimed subject matter is implemented as a method, apparatus, or article of manufacture using standard programming or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. Of course, many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.

FIG. 11 and the following discussion provide a description of a suitable computing environment to implement aspects of one or more of the provisions set forth herein. The operating environment of FIG. 11 is merely one example of a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality of the operating environment. Example computing devices include, but are not limited to, personal computers, server computers, hand-held or laptop devices, mobile devices, such as mobile phones, Personal Digital Assistants (PDAs), media players, and the like, multiprocessor systems, consumer electronics, mini computers, mainframe computers, distributed computing environments that include any of the above systems or devices, etc.

Generally, aspects are described in the general context of “computer readable instructions” being executed by one or more computing devices. Computer readable instructions may be distributed via computer readable media as will be discussed below. Computer readable instructions may be implemented as program modules, such as functions, objects, Application Programming Interfaces (APIs), data structures, and the like, that perform one or more tasks or implement one or more abstract data types. Typically, the functionality of the computer readable instructions are combined or distributed as desired in various environments.

FIG. 8 illustrates a system 800 including a computing device 812 configured to implement one aspect provided herein. In one configuration, the computing device 812 includes at least one processing unit 816 and memory 818. Depending on the exact configuration and type of computing device, memory 818 may be volatile, such as RAM, non-volatile, such as ROM, flash memory, etc., or a combination of the two. This configuration is illustrated in FIG. 8 by dashed line 814.

In other aspects, the computing device 812 includes additional features or functionality. For example, the computing device 812 may include additional storage such as removable storage or non-removable storage, including, but not limited to, magnetic storage, optical storage, etc. Such additional storage is illustrated in FIG. 8 by storage 820. In one aspect, computer readable instructions to implement one aspect provided herein are in storage 820. Storage 820 may store other computer readable instructions to implement an operating system, an application program, etc. Computer readable instructions may be loaded in memory 818 for execution by processing unit 816, for example.

The term “computer readable media” as used herein includes computer storage media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions or other data. Memory 818 and storage 820 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by the computing device 812. Any such computer storage media is part of the computing device 812.

The term “computer readable media” includes communication media. Communication media typically embodies computer readable instructions or other data in a “modulated data signal” such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” includes a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.

The computing device 812 includes input device(s) 824 such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, or any other input device. Output device(s) 822 such as one or more displays, speakers, printers, or any other output device may be included with the computing device 812. Input device(s) 824 and output device(s) 822 may be connected to the computing device 812 via a wired connection, wireless connection, or any combination thereof. In one aspect, an input device or an output device from another computing device may be used as input device(s) 824 or output device(s) 822 for the computing device 812. The computing device 812 may include communication connection(s) 826 to facilitate communications with one or more other devices 830, such as through network 828, for example.

Although the subject matter has been described in language specific to structural features or methodological acts, it is to be understood that the subject matter of the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example aspects.

Various operations of aspects are provided herein. The order in which one or more or all of the operations are described should not be construed as to imply that these operations are necessarily order dependent. Alternative ordering will be appreciated based on this description. Further, not all operations may necessarily be present in each aspect provided herein.

As used in this application, “or” is intended to mean an inclusive “or” rather than an exclusive “or”. Further, an inclusive “or” may include any combination thereof (e.g., A, B, or any combination thereof). In addition, “a” and “an” as used in this application are generally construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form. Additionally, at least one of A and B and/or the like generally means A or B or both A and B. Further, to the extent that “includes”, “having”, “has”, “with”, or variants thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising”.

Further, unless specified otherwise, “first”, “second”, or the like are not intended to imply a temporal aspect, a spatial aspect, an ordering, etc. Rather, such terms are merely used as identifiers, names, etc. for features, elements, items, etc. For example, a first channel and a second channel generally correspond to channel A and channel B or two different or two identical channels or the same channel. Additionally, “comprising”, “comprises”, “including”, “includes”, or the like generally means comprising or including, but not limited to.

It will be appreciated that various of the above-disclosed and other features and functions, or alternatives or varieties thereof, may be desirably combined into many other different systems or applications. Also that various presently unforeseen or unanticipated alternatives, modifications, variations or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims. 

1. A long short-term memory (LSTM) cell for sensor fusion, comprising: a first forget gate receiving a first sensor encoding s_(t) ^(i) and a first shared hidden state h_(t-1); a second forget gate receiving a second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1); a first input gate receiving the first sensor encoding st and the first shared hidden state h_(t-1); a second input gate receiving second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1); a first output gate generating a first output based on a first shared cell state c_(t-1), the first sensor encoding s_(t) ^(i), and the first shared hidden state h_(t-1); a second output gate generating a second output based on the first shared cell state c_(t-1), the second sensor encoding s_(t) ^(j), and the first hidden state h_(t-1); a hidden state gate generating a second shared hidden state h_(t) based on the first output and the second output; and a cell state gate generating a second shared cell state c_(t) based on an output of the first forget gate, an output of the second forget gate, an output of the first input gate, and an output of the second input gate.
 2. The LSTM cell of claim 1, wherein the first forget gate or the second forget gate employ a sigmoid function to generate the output of the first forget gate or the output of the second forget gate, respectively.
 3. The LSTM cell of claim 2, wherein the output of the first forget gate f_(t) ^(i)=σ(W_(f) ^(i)*s_(t) ^(i)+U_(f) ^(i)*h_(t-1)+b_(f) ^(i)).
 4. The LSTM cell of claim 1, wherein the first input gate or the second input gate employ a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function to generate the output of the first input gate or the output of the second input gate, respectively.
 5. The LSTM cell of claim 4, wherein the output of the first input gate i_(g) ^(i)=σ(W_(i) ^(i)*s_(t) ^(i)+U_(i) ^(i)*h_(t-1)+b_(i) ^(i)).
 6. The LSTM cell of claim 1, wherein the first output gate or the second output gate employ a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function to generate an output of the first output gate or an output of the second output gate, respectively.
 7. The LSTM cell of claim 6, wherein the output of the first output gate o_(t) ^(i)=σ(W_(o) ^(i)*s_(t) ^(i)+U_(o) ^(i)*h_(t-1)+b_(o) ^(i)).
 8. The LSTM cell of claim 1, wherein the hidden state gate generates the second shared hidden state h_(t) by calculating an element-wise sum of the first output and the second output.
 9. The LSTM cell of claim 1, wherein a first architecture within the LSTM cell includes the first forget gate, the first input gate, and the first output gate; wherein a second architecture within the LSTM cell includes the second forget gate, the second input gate, and the second output gate; and wherein the first architecture is parallel to the second architecture.
 10. The LSTM cell of claim 9, wherein the first architecture generates a first partial shared cell state c_(t) ^(i)=c_(t-1)⊙f_(t) ^(i)+i_(t) ^(i)⊙g_(t) ^(i), wherein the second architecture generates a second partial shared cell state c_(t) ^(j)=c_(t-1)⊙f_(t) ^(j)+i_(t) ^(j)⊙g_(t) ^(j), wherein the cell state gate generates the second shared cell state c_(t) by calculating an element-wise sum of the first partial shared cell state c_(t) ^(i) and the second partial shared cell state c_(t) ^(j).
 11. A method for sensor fusion associated with a long short-term memory (LSTM) neural network, comprising: receiving a first sensor encoding s_(t) ^(i) and a first shared hidden state h_(t-1) at a first forget gate; receiving a second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1) at a second forget gate; receiving the first sensor encoding s_(t) ^(i) and the first shared hidden state h_(t-1) at a first input gate; receiving second sensor encoding s_(t) ^(j) and the first shared hidden state h_(t-1) at a second input gate; generating a first output based on a first shared cell state c_(t-1), the first sensor encoding s_(t) ^(i), and the first shared hidden state h_(t-1) at a first output gate; generating a second output based on the first shared cell state c_(t-1), the second sensor encoding s_(t) ^(j), and the first hidden state h_(t-1) at a second output gate; generating a second shared hidden state h_(t) based on the first output and the second output at a hidden state gate; and generating a second shared cell state c_(t) based on an output of the first forget gate, an output of the second forget gate, an output of the first input gate, and an output of the second input gate at a cell state gate.
 12. The method for sensor fusion of claim 11, comprising generating the output of the first forget gate or the output of the second forget gate by employing a sigmoid function.
 13. The method for sensor fusion of claim 11, comprising generating the output of the first input gate or the output of the second input gate by employing a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function.
 14. The method for sensor fusion of claim 11, comprising generating an output of the first output gate or an output of the second output gate by employing a sigmoid function, a hyperbolic tangent function (tanh), or an element-wise product function.
 15. A long short-term memory (LSTM) cell for sensor fusion, comprising: M number of forget gates receiving M sets of sensor encoding data from M number of sensors and a shared hidden state h_(t-1), wherein M is >=2; M number of input gates receiving the corresponding M sets of sensor data and the shared hidden state h_(t-1); and M number output gates generating M partial shared cell state outputs and M partial shared hidden state outputs based on the M sets of sensor encoding data, the shared hidden state h_(t-1), and a shared cell state c_(t-1).
 16. The LSTM cell for sensor fusion of claim 15, comprising a cell state gate generating an updated shared cell state c_(t) by calculating an element-wise sum of the M partial shared cell state outputs.
 17. The LSTM cell for sensor fusion of claim 15, comprising a hidden state gate generating an updated shared hidden state h_(t) by calculating an element-wise sum of the M partial shared hidden state outputs.
 18. The LSTM cell for sensor fusion of claim 15, wherein a first architecture within the LSTM cell includes a first forget gate of the M number of forget gates, a first input gate of the M number of input gates, and a first output gate of the M number of output gates; and wherein a second architecture within the LSTM cell includes a second forget gate of the M number of forget gates, a second input gate of the M number of input gates, and a second output gate of the M number of output gates.
 19. The LSTM cell for sensor fusion of claim 18, wherein the first architecture is parallel to the second architecture.
 20. The LSTM cell for sensor fusion of claim 15, wherein the M number of forget gates, the M number of input gates, and the M number of output gates employ a sigmoid function. 